
// All function calls are blocking

class MarsManipulator {
public:
	enum ECommandResult { SUCCESS, FAILURE, UNKNOWN };
	MarsManipulator();
	~MarsManipulator();

	// Picking up objects
	ECommandResult pickObject(double object_x, double object_y);
	ECommandResult extendArm();
	ECommandResult retractArm(); // This can also be called when the manipulator is holding an item

	// Storing and delivering objects
	ECommandResult storeObjectToPocket(int pocket);
	ECommandResult deliverFromPocket(int pocket);
	ECommandResult deliverFromManipulator();

	// Manipulator control
	ECommandResult openManipulator();
	ECommandResult closeManipulator();
};

